package array;

/**
 * @author yuisama
 * @date 2022/08/22 11:55
 * 观察方法的调用过程
 **/
public class StackTest {
    public static void main(String[] args) {
        int n = 5;
        int[] ret = fiboN(n);
        // 不指向任何的堆内存地址
        ret = null;
        System.out.println(ret.length);
//        for (int i : ret) {
//            System.out.print(i + "、");
//        }
    }
    /**
     * 计算斐波那契数列的前N项并返回
     * @param n
     * @return 因为前N个斐波那契数不止一个整数，因此返回的是整型的数组
     */
    public static int[] fiboN(int n) {
        if (n < 0 ) {
            // null - 空指针(空引用)，引用数据类型的默认值,当引用类型保存的值是null时
            // 说明该引用没有保存任何的堆内存地址。
            return null;
        }
        int[] arr = new int[n];
        arr[0] = arr[1] = 1;
        // 一定记住，数组下标和元素个数差一个单位
        for (int i = 2; i < n; i++) {
            // 状态转移方程
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        return arr;
    }


    public static void swapArr(int[] arr) {
        arr = new int[]{10,20};
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }
    public static void swap(int x,int y) {
        int tmp = x;
        x = y;
        y = tmp;
        System.out.println("swap方法中的x = " + x + ", y = " + y);
    }
}